 10Tec iGrid ActiveX Control 
=============================

-------------------
 v2.50, build 0330
 July 7th, 2003
-------------------

 1. One improvement has been done in incremental search. The current build
    starts incremental search when you press an alpha-numeric key even if
    no cells (or rows in row mode) are selected. In all previous builds you
    need to select a cell or row first.


-------------------
 v2.50, build 0329
 June 23rd, 2003
-------------------

 1. iGrid did not draw properly background of rows in some cases after you had
    removed or hidden rows when the BackColorEvenRows and/or BackColorOddRows
    are set. Fixed.
    
 2. One minor bug with setting row key to an empty string was fixed.
 
 3. iGrid scroll bars failed when you add an iGrid control to a form dinamycally
    using the following statement:
    
      Form1.Controls.Add("igrid250_75B4A91C.igrid", "igrid1")
    
    Fixed.
    
 4. iGrid did not use the BackColorEvenRows or BackColorOddRows settings when
    the user is editing the textbox cell. Fixed.

 5. iGrid no longer raises the ColWidthChanged event when you change column
    width using the ColWidth property.

 6. The horizontal scroll bar sometimes flickers when you change column width
    in the ColWidthChanged event. Fixed.

 7. Some enhancements concerning The ColMinWidth and ColMaxWidth properties:
    
    7.A. If you set the ColWidth property to a value less than ColMinWidth,
         the minimum width of the column is used as the result column width
         (the same algorithm is used for the maximum width).
         The error with the code vbObjectError+520 "Column width can not be
         less than its minimum width or greater than its maximum width" was
         fired in the previous build.
    
    7.B. If you set the ColMinWidth property to a value greater than the
         current width of a column, the width of the column is changed to
         ColMinWidth (this also concerns ColMaxWidth).
         The vbObjectError+520 error was raised in the previous build.

    7.C. If you define a column with the AddCol method and specify the
         column width less than its minimum width, the minimum width is used
         as the column width (as well for the maximum width).
         The vbObjectError+520 error was raised in the previous build.

    As you can see, iGrid no longer raises the error with the code
    vbObjectError+520.
    
 8. If multiselection mode was turned on, you need to doubleclick at the
    combobox button to expand the drop-down list attached to a cell. Fixed.


-------------------
 v2.50, build 0315
 May 31st, 2003
-------------------

 The first official release of the version 2.5.
 See the "iGrid 2.5 - What's New.doc" file for the full list of new features.


-------------------
 v2.10, build 0098
-------------------

 1.Some improvements were implemented in virtual mode.
 
   First of all, you can use the PAGEDOWN key in this mode like in normal mode. 
   If you press this key, iGrid requests for new rows accordingly to the size of 
   page, i.e. the RequestRow event is fired several times depending of the 
   amount of new rows which need to be displayed. The previous build requested 
   only one row on PAGEDOWN.
   
   Secondly, the RequestRow event is raised in straight order for the first rows
   when the grid is displayed at the first time (the previous build could shuffle
   these events and generates them in reverse order).
   
 2.The AutoHeightRow method has been enhanced for rows which contain row text.
   From the current build, iGrid calculates the height of normal (non row text)
   cells independently from the height of row text cell. This means that you can
   display multiline text in normal cells without cutting after you have issued
   the AutoHeightRow method for such rows. More over, iGrid stores the height of
   normal cells and row text cell for each row independently. The previous build
   used the value of the DefaultRowHeight property as the height of normal cells
   for each row and you could not be able to set this height for each row
   independently for the best sight.
  

-------------------
 v2.10, build 0092
-------------------

 1.iGrid has support for the mouse wheel now. Notice that in iGrid you can also
   use the CTRL key to scroll iGrid horizontally if you rotate the wheel that
   scrolls windows vertically. We have implemented it for users which have
   a mouse with a single wheel.

 2.In some cases after a new column had been inserted after an existing column
   iGrid changed column width incorrectly when the user resizes the column
   interactively using the column header. Fixed.
   
 3.iGrid used the value of the lMaxLength parameter of the RequestEdit event
   for each cells if you had changed its value at least once. Fixed.


-------------------
 v2.10, build 0078
-------------------

 1.From the current build, iGrid hides combo box buttons in combo box cells
   if you set the Editable property to False.
   
 2.iGrid drawing code has been optimized. It uses WinAPI clip region functions for
   each cell now. This also means that you may not worry about drawing outside of a
   custom draw cell in the CustomDraw event. Now you can remove statements which
   restrict drawing only in the current cell bounds in this event.

 3.iGrid incorrectly repainted its contents when the user scrolled the control
   and there was a window over the grid. Fixed.


-------------------
 v2.10, build 0053
-------------------

 1.Some enhancements were implemented in multi-selection mode. Now you can
   use the SHIFT, CTRL and SHIFT+CTRL combinations with cursor control keys
   and mouse to select multiple cells. The SHIFT key allows you to select
   rectangular cell areas (like in MS Excel and Windows Explorer) and the
   CTRL key allows you to add new cells to existing selection. The
   CTRL+SPACE keyboard combination is now used to toggle the selection of
   the current cell (or row in row mode).
   If you press cursor control keys holding down CTRL, iGrid moves the
   current cell to the desired position but doesn't select the newest
   current cell.

 2.If you changed the RowMode property from True to False, iGrid didn't remove
   the selection from all selected cells except the current cell. Fixed.

 3.The Clear method has been improved for the following purpose.
   If you have some columns in your grid and the user would like the horizontal
   scroll bar to never move when you remove rows, you can use the Clear method
   with the the bRemoveCol parameter equals False. When you issue this method
   in this manner, iGrid doesn't scroll the horizontal scroll bar to the
   leftmost position (the previous build resets the grid to the first column).

 4.The LayoutSort property didn't allow you to restore sort icons when you use
   multi-column sorting if you set the MultiSortIcons property to True. Fixed.


-------------------
 v2.10, build 0040
-------------------

 1.The algorithm that displays combo lists has been improved. If you specify
   in the SetHeightInItems method of a combo a value that exceeds the maximum
   number of visible items that can be placed on the screen, iGrid
   automatically decreases the height of the combo list to place it entirely at
   the screen and shows the vertical scroll bar to allow the user to scroll the
   list to select any item. iGrid also displays such combo lists above or under
   the cell; it choose the area of the maximum height to display a combo list.
   This algorithm also takes into account a cell height (remember that each row
   of iGrid can have its own height), the cell position on the screen and
   calculates combo list position dynamically just before the combo list
   appears at the display.

 2.The RemoveCol method confused column keys if columns had been reordered.
   Fixed.


-------------------
 v2.10, build 0032
-------------------

 1.The TextEditChange event was raised in some cases when the user
   puts a textbox cell into editing mode by double-click. Fixed.

 2.Small optimization of the FindSearchMatchRow function has been done.

 3.Some improvements in the cell text drawing code was made. Now you can
   place more rows in the same iGrid contents area and text in these rows
   has good readability. The default value for the DefaultRowHeight
   property was decreased to 15 pixels.

 4.The code which implements column autoresizing adds additional 5 empty
   pixels to increase the readability of column text. It occurs when the user
   double-clicks a column header divider or you issue the AutoWidthCol method.

 5.iGrid didn't draw extended gridlines when it starts if no rows are present.
   Fixed.

 6.The AddRow method didn't generate the "Attempt to add rows with no columns"
   error. Fixed.


-------------------
 v2.10, build 0023
-------------------

 1.The following bug was fixed. When you select a cell different from the
   current cell in multiselect mode, iGrid doesn't redraw its contents.

 2.Flicker-free improvements for extended gridlines were implemented.

 3.Some improvements for large fonts support.

 4.Improvement and bug fix: While the user is resizing a column, iGrid stops
   any redrawing of its contents and draws correctly column resizing line.
   It allows you to see column resizing line when iGrid is updated dynamically
   (for instance, using the Timer control).


-------------------
 v2.10, build 0016
-------------------

 1.Small improvement for combobox cells: when the user presses an alpha-numeric
   key, iGrid expands the dropdown list of a combobox cell and highlights the
   first item which text starts from the pressed character (if one exists).
   iGrid performs case-insensitive search in this case.

 2.Fixed a small bug with the EnsureVisible method: if row mode is turned on,
   this method scrolled the grid only in the vertical direction to display the 
   specified row but didn't display the specified column if it was not visible.


-------------------
 v2.10, build 0013
-------------------

Small non-critical bug improvements was done. Some improvements concern working
with combobox cells through the CellCtrlKey and CellType properties.


-------------------
 v2.10, build 0009
-------------------

  1.The GridLinesExtend property has been added. It allows to draw gridlines
    outside of the "real" cells. This property can accept one of the following
    values:
     igGridLinesExtendNone - gridlines are drawn only for real cells;
     igGridLinesExtendRight - horizontal gridlines extend to the right edge of
       the grid;
     igGridLinesExtendDown - horizontal and vertical gridlines extend downward
       from the real cells;
     igGridLinesExtendBoth - both igGridLinesExtendRight and 
       igGridLinesExtendDown simultaneously.
    If gridlines extend downward from the real cells, iGrid draws these
    gridlines for rows with the height stored in the DefaultRowHeight property.
    If you change the value of this property, these gridlines are drawn again
    according to the new value.

  2.iGrid v2.10 introduces a new cell style - custom draw cells. Using this new
    cell type, igCellCustomDraw, you can draw cells on your own way. iGrid
    raises the new CustomDrawCell event for each custom draw cell when it needs
    to be drawn; you must place custom draw code in this event.
    You need to observe the following rules when you work with custom draw
    cells:
      1) iGrid draws the background of the cell first, then it raises the
         CustomDrawCell event (in which you can draw the cell) and, at last,
         draws the focus rectangle and gridlines over the cell contents you
         have just drawn. This technique allows you to think only about the
         drawing of the contents of the cell - all of other functions
         (background, focus rectangle and gridlines drawing) are performed
         by iGrid.
      2) When you are drawing a cell, you must not draw outside of the cell 
         boundaries passed as the parameters of the CustomDrawCell event.
      3) iGrid raises the CustomDrawCellGetSize event for each custom draw
         cell. You need to specify the cell height and width in its
         parameters. iGrid uses this information in the AutoWidthCol,
         AutoHeightRow and in some other methods.
      4) If you change the CellValue property for a custom draw cell, iGrid
         raises the CustomDrawCell event for this cell.

  3.The ColHeaderRightClick event has been renamed to HeaderRightClick because
    it is triggered when the user clicks anywhere in a grid header in contrast
    to the ColHeaderClick event which is only triggered if the user presses the
    column header using the left mouse button. The HeaderRightClick event has
    been supplemented by the Shift parameter which returns an integer that 
    corresponds to the state of the SHIFT, CTRL, and ALT keys in the standard
    VB format (bit 0 for the SHIFT key, bit 1 for the CTRL key and bit 1 for
    the ALT key).
    The ColHeaderClick has been supplemented by new parameters and has the
    following syntax now:
      ColHeaderClick(ByVal lCol As Long, ByRef bDoDefault As Boolean, _
                     ByVal Shift As Integer, ByVal x As Long, ByVal y As Long)
    New parameters:
      bDoDefault - enables/disables default action (column sorting);
      Shift      - returns the state of the SHIFT, CTRL, and ALT keys;
      x,y        - return a number that specifies the current location of the
                   mouse pointer.

  4.The ShellSortObject object has been modified in the following way:
      1) The ColCount property is accessible for writing. If you increase
         ShellSortObject columns amount, the newly created columns are
         initialized by its ordinal numbers, they also have the ascending sort
         order and the sort type "by value". Thus you can sort iGrid by the
         values from the first, second and third columns in ascending order
         using the following statements (if the SortObject property hasn't been
         populated yet):
           iGrid1.SortObject.ColCount = 3
           iGrid1.Sort
      2) The Clear method has been removed. You have to use the statement
         "SortObject.ColCount = 0" instead of it.
      3) Some internal algorithms of ShellSortObject object have been optimized.
         At that, if you want to reference a non-existing column, an error is
         generated (this action in the previous version raises memory
         allocation for the new sort column and if the developer mistakenly
         reference a non-existing column, the error isn't raised).

  5.The igSortNone member of the ESortOrders enumeration has been removed. The 
    values of the igSortAsc and igSortDesc members have been decreased by 1. 

  6.The Sort method of iGrid has been supplemented by the optional parameter
    vCols of the Variant data type. This feature allows you to sort iGrid by
    several columns in one statement. For instance, if you want to sort a grid
    named iGrid1 by the second column, you can simply issue the following
    statement: 
      iGrid1.Sort 2
    If you want to sort the grid by the "Company" and "Total" columns, you can
    simply use the next statement: 
      iGrid1.Sort Array("Company", "Total")

  7.The current version of iGrid provides code-free multi-column sorting (but 
    as ever you can change the default behaviour of the grid on your own 
    manner). Clicking a column header sorts the column in the ascending order, 
    with subsequent clicks toggling the sort. Clicking other columns while 
    holding down the SHIFT, CTRL or ALT key will add those columns to the sort 
    order as well. Our implementation of multi-column sorting allows you to use 
    numerated sort icons which display the first order key, the second order 
    key and so on.
    iGrid allows you to display different sort icons for different sort keys
    using the newly implemented MultiSortIcons property of the Boolean data
    type. It is used if you want to display enumerated sort icons which
    correspond to the sort keys order. If this property is set to False (the
    default value), iGrid displays sort icons with indices 0 and 1 from
    HeaderImageList for all sorted columns. If this property is set to True,
    iGrid displays sort icons with indices 2 and 3 for the first sort key,
    icons with indices 4 and 5 for the second sort key, and so on; at that if
    the grid has been sorted only by one column, iGrid displays in the column
    header icons with indices 0 and 1 which is replaced on the icons with
    indices 2 and 3 if the user adds another sort key.
  
  8.The CommitEdit method has been implemented. It allows you to commit
    interactive editing programmatically. You can use this method while
    developing non-standard editing capabilities. For instance, you can commit
    user changes in a textbox cell when the user presses the F2 key in any
    textbox cell using the following code:
      Private Sub grdThis_TextEditKeyUp(ByVal lRow As Long, ByVal lCol As Long, _
                                 ByVal KeyCode As Integer, ByVal Shift As Integer)
         If KeyCode = vbKeyF2 Then ' F2 tries to save edited text
            grdThis.CommitEdit
         End If
      End Sub
    The CommitEdit method, of course, raises the BeforeCommitEdit event and other
    editing related events.
    
  9.This version of iGrid has been enhanced by a technology that allows iGrid 
    automatically converts edited text in a textbox type cell to a value of the 
    cell value data type. The previous version of iGrid (2.0) gives you the text 
    string the user has entered in a textbox cell in the vNewValue parameter of
    the BeforeCommitEdit event and you should perform type coercion and error
    checking by yourself if the user edits non-string values in a textbox cell.
    According to this new technology, the BeforeCommitEdit event has been 
    supplemented with the lConvErr parameter and iGrid has the new boolean 
    SilentValidation property. If this property is set to False (the default 
    value), an iGrid standard error message box occurs if iGrid can't coerce 
    entered string to the cell value data type. If this property is set to True, 
    iGrid doesn't display its standard error message box while conversion error 
    occurs and you can display your own error message box. The lConvErr 
    parameter of the BeforeCommitEdit event allows you to detect a conversion 
    error. If the error has occurred, this parameter contains a non-zero value 
    which is a standard VB error code ("Type mismatch" or "Overflow" in most 
    cases).
  
 10.If the user clicks a control outside of the grid while a textbox cell is
    editing, iGrid tries to commit changes and the BeforeCommitEdit event is
    triggered (the CancelEdit event was generated in the previous version).
  

-------------------
 v2.00, build 0149
-------------------

  1.One of our beta testers has found a bug that causes resource leak for GDI 
    objects. This misdeed has been rectified. If you will find any such error,
    please, notify us about it by sending an e-mail to support@10Tec.com.
    P.S. How to detect a resource leak error.
    You can see the number of GDI objects your application uses if you
    turn on the "GDI objects" column in the Windows NT/2000/XP Task Manager.
    Note, that if you begin to open the same windows of your application
    several times, the number of GDI objects used by your application is grown
    up to the maximum value that is specific for your application. The number
    of GDI objects reaches this threshold after you have open all windows of
    your application one or two times. If you will find out that the number
    of GDI objects increases after you have opened and have closed windows
    5-10 times, this is a resource leak.

  2.Two small improvements have been made in the internal error trapping
    code of our component. The Remove method of the Combos collection can
    generate the iGrid error with the number &H80040202 ("Invalid procedure
    call or argument") if you attempt to remove non-existing element (in the
    previous build the standard VB error 5 was generated).


----------------------------
 v2.00 Release (build 0134)
----------------------------

  1.The current version of the grid has own memory manager. Developers can 
    reduce the time of adding, inserting and removing rows using this new 
    feature up in ten times. To do this, you need to choose the right value for 
    the MemMngWantFreeRows parameter of the built-in memory manager. This 
    parameter specifies how many rows is reserved in memory for iGrid when you 
    add a new row and the reserved memory is not enough to store the currently 
    added row. Thus computer memory is reserved for iGrid in blocks. This 
    principle allows to avoid unneeded memory allocation operations that can 
    take a long time. If the value of this parameter is equal to zero (by 
    default), the memory is allocated using the customary scheme (memory is 
    allocated when you add each new row). This parameter is useful if you add 
    new rows to the grid dynamically and you can determine the number of rows 
    only when you program is running.
    The second parameter of the memory manager, MemMngAllocatedRows, is used to 
    determine the number of rows that is already allocated for iGrid. You can 
    reduce the amount of memory that is allocated for your grid. To do this, 
    assign to this iGrid property the required number of rows and iGrid 
    automatically free unused memory. 

  2.The FillFromRS method is added. This method allows to populate the grid 
    using data from an ADO recordset. iGrid can use ADO 2.5 or higher. To 
    populate the grid using this method, specify the required ADO recordset as 
    the single parameter of this method. If your grid has had no columns, iGrid 
    automatically creates columns to display all recordset fields. If your grid 
    has had some columns before you issue this method, the keys of the defined 
    columns is used as recordset field names and iGrid displays the data only 
    from the specified fields. 

  3.The current version of iGrid coins the term "default sorting". This term 
    means that the grid is sorting when the user clicks a column header, and the 
    appropriate sort icon is displayed in the column header; the second click on 
    the header of the sorted column sorts this column in the descending mode. To 
    implement this feature, the DoDefaultSort method has been added. This method 
    sorts iGrid using "default sort" and optionally displays in the sorted 
    column header the appropriate sort icon. If you have specified the header 
    imagelist, the DoDefaultSort method uses its first icon (index #0) as the 
    ascending sort icon and the second icon (index #1) as the descending sort 
    icon. Sort icons aren't displayed if you specify False for the bSortIcon 
    parameter of this method. 

  4.The SortObject object has the new ColColunt property that returns number of 
    columns defined in this object. 

  5.The lCol parameter has been added to the ColHeaderRightClick event. This 
    event has the following syntax now: ColHeaderRightClick(ByVal lCol As Long, 
    ByVal x As Long, ByVal y As Long). The lCol parameter stores the index of 
    the column that has been clicked by the user. 

  6.The ColHeaderDblClick(ByVal lCol As Long) event has been added. 

  7.The ColDefaultCell(vCol) As CellObject property has been implemented. The 
    value of this property is used to automatically initialize the newly created 
    cells of a column. 

  8.The AddCol method is a function now. This method returns the column default 
    cell.
    For instance, you can have the following code: 
       grdCust.AddCol(sKey:="total", sHeader:="Total", lWidth:=60)
       With grdCust.ColDefaultCell("total")
          .sFmtString = "$#,##0"
          .eTextFlags = igTextRight
       End With
    Now you can write the following code instead of the code above: 
       With grdCust.AddCol(sKey:="total", sHeader:="Total", lWidth:=60)
          .sFmtString = "$#,##0"
          .eTextFlags = igTextRight
       End With

  9.iGrid generates own error messages now. These errors can be trapped using 
    the "On Error" statement as the same way as standard VB errors. Among of 
    them are "Subscript out of range", "Invalid procedure call or argument", 
    "Attempt to add rows with no columns", etc. 

 10.Two new string properties, LayoutCol and LayoutSort, have been added. These 
    properties allows saving and restoring grid layout. You can save and restore 
    visibility, width and order of each column using the first property. The 
    second property allows to save and restore sort order of iGrid. 

 11.In the edit mode, when the user clicks outside the edited cell, iGrid try to 
    save user input and raises the BeforeCommitEdit event (the CancelEdit event 
    is triggered in the previous version of iGrid).
    Editing is cancelled in all other events (grid scrolling, mouse clicks on a 
    column header or outside of the grid, and so on). The CancelEdit event is 
    triggered in these cases as well as earlier. Important! Don't use any modal 
    dialog boxes in the CancelEdit event because some system events can not be 
    handled in Windows and iGrid may be drawn improperly. 

 12.The RequestEdit(Optional ByVal iKeyAscii As Integer = 0) method is added. 
    You can put iGrid in edit mode using this method. The iKeyAscii parameter is 
    used to imitate a key press. Alongside with it the CancelEdit method is 
    added. You can cancel cell edit using this method in your program code. 

 13.The GridLines property is an enumeration now. The GridLines property 
    settings are: igGridLinesNone, igGridLinesVertical, igGridLinesHorizontal, 
    igGridLinesBoth. 

 14.The MouseDown event has two new parameters - lRow and lCol. These parameters 
    store the row and the column of the cell that has been clicked by the user. 

 15.Checkbox cells can store values of any type (but not only vbChecked, 
    vbUncheked and vbGrayed as earlier). When the user clicks a checkbox cell, 
    the value of this cell is changed respectively to its value type and 
    checkbox type (two or three states): 
     -if the checkbox has two states and store True or False, these values is 
      changed with each other; 
     -if the checkbox has two states and stores a non-boolean value, this value is 
      converted to the corresponding boolean value and changed like in the 
      previous case; 
     -if the checkbox has three states, the value of the checkbox is converted to 
      vbChecked, vbUncheked or vbGrayed and these values are changed like in the 
      standard VB checkbox. 

 16.The following function is added:
       Function FindSearchMatchRow( _
          ByVal vSearchCol As Variant, _
          ByVal sSearchString As String, _
          Optional ByVal lStartRow As Long = -1, _
          Optional ByVal bVisibleRowsOnly As Boolean = True, _
          Optional ByVal bLoop As Boolean = False _
       ) As Long 
    You can perform text search in cells of any iGrid columns using this 
    function. This function searches the first cells in the specified column 
    (vSearchCol) which text is started from the specified character string 
    (sSearchString). The case of the characters is ignored in this function. The 
    function returns the row number of the found cell or zero otherwise.
    You can also specify the next options in this function:
      lStartRow - the row start number from which search is started;
      bVisibleRowsOnly - check only visible rows;
      bLoop - continue search from the first cell in the column if no matches found 
      from the start row to the last row of the column.

 17.Two new boolean properties, KeySearchFromCurRow and KeySearchLoop, have been 
    added. These properties change the behaviour of the grid when the user 
    performs the incremental search. If the first property is turned on, iGrid 
    starts incremental search from the currently selected row; otherwise it 
    starts search from the first row. If the second property is turned on, iGrid 
    continue search from the first cell in the column if no matches found from 
    the start row to the last row of the column. The value of each of the 
    properties equals to False by default. 

 18.The SelectionChange event from the previous version is divided on two 
    events, CurCellChange and CellSelectionChange. The first event is triggered 
    when the user changes the current cell. The second event is occurs when the 
    selection of any grid cell is changed. The CellSelectionChange has the 
    following syntax: CellSelectionChange(ByVal lRow As Long, ByVal lCol As 
    Long, ByVal bSelected As Boolean). The event is triggered when the selection 
    is set or cleared. The bSelected parameter indicates the new selection state 
    of a grid cell. 

 19.The ColOrderChanged event from the previous version is replaced by the 
    following two events: 
     -ColHeaderBeginDrag(ByVal lCol As Long, ByRef bCancel As Boolean)
      This event is raised before the user starts dragging a column header. The 
      bCancel parameter that is passed by reference allows to prohibit column 
      header dragging. All you need to do this is to assign True to this 
      parameter. 
     -ColHeaderEndDrag(ByVal lCol As Long, ByVal lColBefore As Long, ByRef bCancel 
      As Boolean)
      This event is triggered by the grid when a drag operation has ended on one 
      of its column headers. The lColBefore parameter stores the column number 
      that is placed in the grid just after the dragged column. The bCancel 
      parameter allows to cancel the dragging operation as the same way as in the 
      previous event. 

 20.The Appearance property has been implemented. This property returns or sets 
    the paint style of the grid on a VB form like the standard VB Appearance 
    property (but the value of this property can be changed also at run-time). 

 21.The DblClick event has been supplemented by the bRequestEdit parameter. This 
    parameter is used to prohibit editing when the user double clicks the grid. 

 22.The ComboObject will be supplemented by the following properties/methods: 
    1) ItemValue(ByVal lIndex As Long) - returns/sets the value of a comboitem. 
    2) The RemoveItem(ByVal lIndex As Long) allows to remove comboitems. 
    3) The AddItem method has been supplemented by the lIndex parameter that is 
       used to insert a comboitem before another comboitem. 

 23.The HighlightSelCells As Boolean property has been added. This property 
    enables the highlighting of the selected cells (True) or disables it 
    (False). In the last case only the current cell (or the current row in row 
    mode) is marked by a focus rectangle if the focus rectangle is turned on. 

 24.Two new properties, FocusRectColor1 and FocusRectColor2, have been 
    implemented. These properties have the OLE_COLOR data type and define the 
    two colors that is used to draw a focus rectangle. You can create a solid 
    focus rectangle using these properties (if the values of these properties 
    are equal). 

 25.The CellHatch property of the EHatchStyles type has been implemented. The 
    property allows to specify hatch background for a cell.
    Another newly created property, OpaqueTextInHatchedCells As Boolean, allows 
    to draw opaque (True) or transparent (False) text in the hatched cells of 
    the grid. 

 26.The CurRow and CurCol properties can accept a zero value. This value 
    indicates that the grid has no the currently selected cell. 

 27.The SetCurCell(ByVal lRow As Long, ByVal lCol As Long) method has been 
    added. This method allows to change the currently selected cell in one 
    statement without generating intermediate CurCellChange and 
    CellSelectionChange events which is triggered when you change the value of 
    the CurRow or CurCol property.
    In addition, you can replace the code like the following 
       With grdCust
          .Redraw = False
          .CurRow = 1
          .CurCol = 2
          .Redraw = True
       End With
    on the next statement: 
       grdCust.SetCurCell 1, 2

 28.The ColDividerDblClick(ByVal lCol As Long, ByRef bDoDefault As Boolean) 
    event has been implemented. This event is raised when the user double clicks 
    a column header divider. The bDoDefault parameter allows to prohibit the 
    default value for this event (column width auto fit). 

 29.Three new flags have been implemented for the text cells: 
    igTextBoxNoScrollBars, igTextBoxVScrollBar and igTextBoxHScrollBar. These 
    flags is used to allow vertical and/or horizontal scrollbars in the text 
    editing area. You can combine igTextBoxVScrollBar and igTextBoxHScrollBar 
    flags to enable both scrollbars. 

 30.The following events has been implemented to trap key press when the user 
    edit text cells:
       TextEditChange(ByVal lRow As Long, ByVal lCol As Long)
       TextEditKeyDown(ByVal lRow As Long, ByVal lCol As Long, _
         ByVal KeyCode As Integer, ByVal Shift As Integer)
       TextEditKeyPress(ByVal lRow As Long, ByVal lCol As Long, ByRef KeyAscii As Integer)
       TextEditKeyUp(ByVal lRow As Long, ByVal lCol As Long, _
         ByVal KeyCode As Integer, ByVal Shift As Integer)
    You can also use the following properties for the text editing area: 
    TextEditText, TextEditSelStart, TextEditSelLength, TexEditSelText. The 
    events and properties mentioned above are identical to the corresponding 
    events and properties of the standard VB TextBox control. 

 31.Internal data structures and algorithms of the current version of iGrid have 
    been optimized. The amount of the memory required to store iGrid data has 
    decreased in two times due to the optimization. The speed of operations with 
    large amount of data is also significantly increased.
    Note that the following changes have been made in iGrid during the 
    optimization: 
    1) The CellTag property has been removed. 
    2) The CellMaxLength property has been removed. You can use the lMaxLength 
       parameter in the RequestEdit property instead of this removed property. For 
       instance, if you want to restrict user input to 12 characters in the text 
       cells of the "filename" column of the grid named grdThis, write the 
       following code: 
          Private Sub grdThis_RequestEdit( _
                ByVal lRow As Long, ByVal lCol As Long, _
                ByVal iKeyAscii As Integer, bCancel As Boolean, _
                sText As String, lMaxLength As Long)
             If grdThis.ColKey(lCol) = "filename" Then
                lMaxLength = 12
             End If
          End Sub
    All other changes in iGrid limitations are reflected in the Technical 
    Capabilities section of the iGrid 2.0 help file. The lates version of this 
    file can be downloaded from the Download Section of the 10Tec Company Web-
    site at http://www.10Tec.com/
